摊牌了!我要手写一个“Spring Boot”
今天是晴天。老规矩,周末就不分享技术干货了。
简单和小伙伴们聊聊自己最近正在做和已经开始做的事情。
01 重构 JavaGuide
我们经常会对自己早期写的代码感觉恶心,这是导致很多项目烂尾的很重要的一个原因之一。
写作也是一样,我也经常觉得自己早期写的文章像一坨翔。造成这个现象的原因很简单!我觉得主要可能有两方面原因:
自己沉淀的知识更多,对于某个知识点的理解更加深刻。 不同于其他类型文章,技术类文章本身就需要不断完善,文章内容才会更好。
所以,最近几个月我一直抽空对 JavaGuide 上早期的一些文章进行大篇幅重构,比如 Java 基础、Java 集合框架、 Zookeeper 、Redis 等等。
毕竟,时间有限,自己也还是把主要精力放在写代码上。所以,部分文章还没有开始重构,比如数据结构部分的内容。
就非常期待小伙伴们一起贡献出自己的力量啊!让 Guide哥 能多点时间写代码,嘿嘿!
02 写了个简单的 RPC 框架
我在大学的时候,就使用过 Dubbo 这类 RPC 框架,对于 RPC 框架的原理也有一点的认识。
于是乎!疫情那会,工作也不是很忙,我就想着说自己要不要也写一个 RPC 框架玩玩。
说做就做!前前后后花了 3 个月,我利用业余时间手写一个简单的 RPC 框架(玩具),名字叫做 guide-rpc-framework。这个框架是基于 Netty+Kyro+Zookeeper 并且整合了 Spring 来做的。
讲真!确实,花费了不少精力。虽然,这玩意的原理不难,但是,想写好确实要花时间。
目前的话,这个项目已经有 0.7k 的 star。感谢小伙伴们的支持!
像这样的开源项目,放到简历上绝对是加分项!
而且,我在自己去写 RPC 框架的时候,加深了自己对于 RPC 框架原理的认识。具体落实到代码实现的过程中,遇到了很多问题,解决问题的过程中也提高了自己的编程能力和解决问题的能力。总而言之,造轮子是一种特别能够提高自己系统编程能力的手段。
03 写一个简易版的“Spring Boot”
是的!我准备开始造下一个轮子了,一个简易版的“Spring Boot”。名字我都起好了,叫做“jsoncat”。
名字没有特别含义,只是因为这个框架目前定位是只返回 json 类型数据给前端,所以就在名字中加上了 json。
其实,说是简易版的 Spring Boot ,不过是简单模仿 Spring Boot 提供的功能,自己手写一个类似的轻量级 HTTP 框架而已。(功能、生态、稳定性等方面肯定不能和 Spring Boot 对比啦!)
具体实现的话,先简单聊聊,后面会单独写文章来分享。我会使用 Netty 来写一个简易的 HTTP Server,主要用来处理 HTTP 请求。其他模块的话,我会在兼顾代码可读性的情况下,尽量减少第三方依赖。所以,整个框架会比较轻量。
另外,代码也会尽量写直白点,不故意秀技。我也会将自己写这个简易的 HTTP 框架学到的东西分享出来。当然啦!大家想要看源码的话,我也会将其开源。
写这个东西只是自己个人的兴趣爱好使然,主要也是为了提高自己的编码能力。推荐小伙伴们也要尽量能够将自己的想法付诸于行动。
理论固然重要,但是脱离于实践的理论并不可靠。
相比于 CRUD ,自己造个轮子,肯定是更有意思,也更能锻炼自己的编程能力和解决问题的能力。
目前的想法是,第 1 版至少是能够让其正确处理 Get 请求 和 Post 请求。目前的话,我基本已经写完了。相比于之前实现的 RPC 框架来说,这个总体来看,还是稍微简单一些。
造轮子的大部分时间还是在思考怎么让代码更健壮、更易读、更容易维护!
说句题外话,要想让代码更易读,除了要了解面向对象编程的思想之外,那必然少不了对设计模式的运用。这个时候,你看过的源码也可以派上用场了!
04 闲聊
当你们看到这篇文章的时候,我已经出门和大学最好的朋友一起出去嗨皮了。
半年多没见,不知道朋友现在长胖了不?反正,我是长胖了。
我是Guide哥,Java后端开发,会一点前端知识,喜欢烹饪,自由的少年。一个三观比主角还正的技术人。我们下期再见!